package com.lx.sync.provider.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lx.sync.provider.entity.SyncData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;

@Mapper
public interface SyncDataMapper extends BaseMapper<SyncData> {

    @Select("SELECT MAX(update_time) FROM sync_data")
    Long getMaxUpdateTime();

    /**
     * 游标分页查询
     * @param updateTime 更新时间
     * @param lastId 最后一条记录的ID
     * @param pageSize 每页大小
     * @return 数据列表
     */
    @Select("SELECT * FROM sync_data " +
            "WHERE update_time > #{updateTime} " +
            "   OR (update_time = #{updateTime} AND id > #{lastId}) " +
            "ORDER BY update_time ASC, id ASC " +
            "LIMIT #{pageSize}")
    List<SyncData> selectByCursor(@Param("updateTime") Date updateTime,
                                 @Param("lastId") Long lastId,
                                 @Param("pageSize") Integer pageSize);
}
